Technical Field
The described embodiments generally relate to an apparatus and method for providing combined parallel and pipelined video encoding. More particularly, the embodiments relate to apparatus and methods wherein video encoding is accomplished partly using software and partly using dedicated hardware in a combined parallel and pipelined manner.
The embodiments find applications in, in particular, handheld digital cameras and video cameras and mobile terminal systems, e.g., cell phones, smart phones, tablet computers which have a built-in video camera. The embodiments also find application in multimedia devices, such as set top boxes for digital television. The embodiments are applicable to various video encoding standards, for example the VPx (for example VP8) and H264 standards.
Related Art
The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
As the resolution of cameras and displays increases, the requirements of real-time video encoding on, or for, such devices become increasingly demanding in terms of the required processing resource. Moreover, Video standards are evolving continuously with increasing requests in terms of quality, compression rate, input resolutions and real-time constraints. As a result these demanding requirements are subject to frequent change. For mobile devices, a further requirement is that such video encoding must also be power efficient.
Generally speaking, a dedicated hardware (HW) solution that is specific to the particular task will often provide the best solution in terms of processing performance and power efficiency. However, dedicated HW solutions are generally not particularly flexible since a new device must be developed for each change in the video parameters, such as an increase in resolution, or for a change to the standard employed for the encoding. Further, given the increased time taken to develop such solutions in comparison to software solutions, they are often not viable in a fast changing market.
Conversely, despite the increasing performance of Central processing units (CPUs), and a general increase in the number of embedded CPUs that are available on mobile platforms, purely software-based solutions are generally not able to provide sufficiently fast performance for high-resolution real-time video encoding. In addition, by increasing the CPU frequency to improve the performance, the power consumption of the device is also increased. Such an increase in power consumption can lead to poor battery life, difficulties in dissipating the power in a mobile device and even to damage to the device.
To improve processing performance, a system of parallel processing can be implemented either in the form of HW or software (SW). However, the data dependency inherent to video encoding algorithms makes the implementation of parallelism across several processing units difficult. As a result, it is not easy to realise the benefit of multiple CPUs on a mobile platform if parallelism is implemented in the form of a SW algorithm. Further, for efficient parallel processing, the processing units should exchange information rarely, generally not more than a few times per picture.
Accordingly, there is a need to provide video encoders for mobile devices that have the processing capability to achieve real-time video encoding whilst being sufficiently flexible to cope with changes to the encoding standard, and whilst operating at a low power.
US 2009 0274213 discloses a video encoding system based on intra-coding of blocks of pixels within images in the video sequence.
It is an aim of the embodiments herein described to overcome or mitigate at least some of the above described limitations.